//package com.lry.basic.jvm.asm.proxy;
//
//import java.lang.reflect.Method;
//import java.lang.reflect.Parameter;
//
//public class SingerAgent extends Singer {
//
//
//  private MethodInterceptor methodInterceptor;
//
//  public SingerAgent(MethodInterceptor methodInterceptor) {
//    this.methodInterceptor = methodInterceptor;
//  }
//
//  @Override
//  public void sing()   {
//      try {
//          Method method = getClass().getSuperclass().getDeclaredMethod("sing");
//          Parameter[] parameters = method.getParameters();
//          methodInterceptor.intercept(new Singer(),method,parameters);
//      } catch (Exception e) {
//          e.printStackTrace();
//      } catch (Throwable throwable) {
//          throwable.printStackTrace();
//      }
//
//  }
//}